package com.cskaoyan.javase.oop2._1extends._5protected._1another;

import com.cskaoyan.javase.oop2._1extends._5protected._0one.CurrentClazz;
import com.cskaoyan.javase.oop2._1extends._5protected._0one.SamePackageSonClazz;

/**
 * 不同包下的子类，根据理论是可以访问父类中受保护成员的
 * 但是访问的方式有很多，有以下几种：
 *      1.直接创建父类对象访问
 *          不行，没有访问权限
 *      2.直接创建自身子类对象访问
 *          可以访问，有访问权限
 *      3.直接创建"兄弟姐妹"对象访问
 *          不行，没有访问权限
 * 综上，在不同包下，要想访问父类中受保护成员，
 *      只能在子类中创建子类自身对象才能够访问从父类中继承过来的受保护成员。
 * 其它方式都不行！！
 * 
 * @since 10:21
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class AnotherPackageSonClazz extends CurrentClazz {
    public static void main(String[] args) {
        // 1.直接创建父类对象访问
        CurrentClazz cc = new CurrentClazz();
        // 'a' has protected access in 'com.cskaoyan.javase.oop2._1extends._5protected._0one.CurrentClazz'
        // System.out.println(cc.a);

        // 2.直接创建自身子类对象访问
        AnotherPackageSonClazz apsc = new AnotherPackageSonClazz();
        System.out.println(apsc.a);

        // 3.直接创建"兄弟姐妹"对象访问
        SamePackageSonClazz spsc = new SamePackageSonClazz();
        // System.out.println(spsc.a);
    }
}
